﻿/**********************************************************************
 * @file   FITKAdaptorGeoDatum.h
 * @brief  基准元素适配器
 * @author guqingtao (15598887859@163.com)
 * @date   2025-05-27
 *********************************************************************/
#ifndef FITKADAPTORGEODATUMMODEL_H
#define FITKADAPTORGEODATUMMODEL_H

#include "FITKAdaptorGeoDatum.h"
#include "FITKInterfaceGeoIOHDF5API.h"

namespace Interface
{
    /**
     * @brief  基准点适配器
     * @author guqingtao (15598887859@163.com)
     * @date   2025-05-27
     */
    class FITKINTERFACEGEOIOHDF5API FITKAdaptorGeoDatumPoint : public FITKAdaptorGeoDatum
    {
    public:

        explicit FITKAdaptorGeoDatumPoint() = default;
        virtual ~FITKAdaptorGeoDatumPoint() = default;

    protected:

        virtual bool writeParameters(H5::Group & g) override;
        virtual bool readParameters() override;

    private:
        // 添加需要的私有成员
    };
    /**
     * @brief  基准线适配器
     * @author guqingtao (15598887859@163.com)
     * @date   2025-05-27
     */
    class FITKINTERFACEGEOIOHDF5API FITKAdaptorGeoDatumLine : public FITKAdaptorGeoDatum
    {
    public:

        explicit FITKAdaptorGeoDatumLine() = default;
        virtual ~FITKAdaptorGeoDatumLine() = default;

    protected:

        virtual bool writeParameters(H5::Group & g) override;
        virtual bool readParameters() override;

    private:
        // 添加需要的私有成员
    };
    /**
     * @brief  基准面适配器
     * @author guqingtao (15598887859@163.com)
     * @date   2025-05-27
     */
    class FITKINTERFACEGEOIOHDF5API FITKAdaptorGeoDatumPlane : public FITKAdaptorGeoDatum
    {
    public:

        explicit FITKAdaptorGeoDatumPlane() = default;
        virtual ~FITKAdaptorGeoDatumPlane() = default;

    protected:

        virtual bool writeParameters(H5::Group & g) override;
        virtual bool readParameters() override;

    private:
        // 添加需要的私有成员
    };
    /**
     * @brief  偏移参考面适配器
     * @author guqingtao (15598887859@163.com)
     * @date   2025-05-28
     */
    class FITKINTERFACEGEOIOHDF5API FITKAdaptorGeoReferenceOffsetPlane : public FITKAdaptorGeoDatum
    {
    public:

        explicit FITKAdaptorGeoReferenceOffsetPlane() = default;
        virtual ~FITKAdaptorGeoReferenceOffsetPlane() = default;

    protected:

        virtual bool writeParameters(H5::Group & g) override;
        virtual bool readParameters() override;

    private:
        // 添加需要的私有成员
    };
    /**
     * @brief  三点参考面适配器
     * @author guqingtao (15598887859@163.com)
     * @date   2025-05-28
     */
    class FITKINTERFACEGEOIOHDF5API FITKAdaptorGeoReferenceThreePointsPlane : public FITKAdaptorGeoDatum
    {
    public:

        explicit FITKAdaptorGeoReferenceThreePointsPlane() = default;
        virtual ~FITKAdaptorGeoReferenceThreePointsPlane() = default;

    protected:

        virtual bool writeParameters(H5::Group & g) override;
        virtual bool readParameters() override;

    private:
        // 添加需要的私有成员
    };
    /**
     * @brief  方程（Ax+By+Cz+D=0）创建参考面适配器
     * @author guqingtao (15598887859@163.com)
     * @date   2025-05-28
     */
    class FITKINTERFACEGEOIOHDF5API FITKAdaptorGeoReferenceEquationPlane : public FITKAdaptorGeoDatum
    {
    public:

        explicit FITKAdaptorGeoReferenceEquationPlane() = default;
        virtual ~FITKAdaptorGeoReferenceEquationPlane() = default;

    protected:

        virtual bool writeParameters(H5::Group & g) override;
        virtual bool readParameters() override;

    private:
        // 添加需要的私有成员
    };
    /**
     * @brief  点和法线创建参考面适配器
     * @author guqingtao (15598887859@163.com)
     * @date   2025-05-28
     */
    class FITKINTERFACEGEOIOHDF5API FITKAdaptorGeoReferencePointAndDirectionPlane : public FITKAdaptorGeoDatum
    {
    public:

        explicit FITKAdaptorGeoReferencePointAndDirectionPlane() = default;
        virtual ~FITKAdaptorGeoReferencePointAndDirectionPlane() = default;

    protected:

        virtual bool writeParameters(H5::Group & g) override;
        virtual bool readParameters() override;

    private:
        // 添加需要的私有成员
    };
}

#endif // FITKADAPTORGEODATUMMODEL_H
